/**
 * Created by shenyinlin on 2018/6/24.
 */

//小马类
//循环渲染三只小马
//循环渲染三只小马的部分

import {Sprite} from "../base/Sprite.js";
import {DataStore} from "../base/DataStore.js";
export class Birds extends Sprite {

    constructor() {

        const image = Sprite.getImage('birds');

        super(image, 0, 0,
            image.width, image.height,
            0, 0,
            image.width, image.height);


        //小马的三种状态需要一个数组去存储
        //小马的宽是34,上下边距是10,小马左右边距是9
        //高度24
        this.clippingX =
          [10,
            10 + 49 + 13,
            10 + 49 + 13 + 49 + 15,
            10 + 49 + 13 + 49 + 15 + 49 + 14
          ];
        this.clippingY = [11, 11, 11, 11];

        this.clippingWidth = [49, 49, 49, 49];

        this.clippingHeight = [48, 48, 48, 48];
        //初始位置屏幕四分之一的位置
        const birdX = DataStore.getInstance().canvas.width / 4;

        this.birdsX = [birdX, birdX, birdX];
        //如果变量不需要对外开放，尽量用内部可见的常量。private起到优化效果
        const birdY = DataStore.getInstance().canvas.height / 2;

        this.birdsY = [birdY, birdY, birdY];

        const birdWidth = 49;
        // const birdWidth = 34;

        this.birdsWidth = [birdWidth, birdWidth, birdWidth];

        const birdHeight = 48;

        this.birdsHeight = [birdHeight, birdHeight,  birdHeight];

        //小马初 上下轴位置
        this.y = [ birdY,  birdY,  birdY];
        //当前小马下标
        this.index = 0;
        this.time  = 0;
        //循环小马次数
        this.count = 0;

    }


    /**
     *
     * H=½gt²。
       自由落体运动是指初速度为0，
     在下落过程中只受重力作用的运动过程。
     在地球上相同位置与相同高度，自由落体的加速度相同（均为g，与质量无关。）
     在这里值得注意的是，自由落体运动特点是：下落的初速度为0，在下落的过程只有重力作用。（不存在空气阻力的理想状态。）
       计算公式为：h=1/2gt^2（h是下落的高度，g是重力加速度，time是运动时间。）
     *
     */

    draw(){

        //切换三只小马的速度
        const  speed = 0.2;
        this.count = this.count +  speed;

        //0,1,2
        if(this.index >= 2){
            this.count = 0;
        }
        //向下省，不要小数,起到减速的效果。
        this.index = Math.floor(this.count);

        //模拟重力加速度
        const g = 0.98 / 3;

        //向上便宜一丢丢偏移量，死得好看一点
        const offsetUp = 30;


        //马的位移
        const offsetY  = (g * this.time * (this.time - offsetUp) ) / 2;

        for(let i = 0; i <=2;i++){
            this.birdsY[i] = this.y[i] + offsetY;
        }
        this.time++;


        super.draw(
            this.img,
            this.clippingX[this.index],this.clippingY[this.index],
            this.clippingWidth[this.index],this.clippingHeight[this.index],
            this.birdsX[this.index],this.birdsY[this.index],
            this.birdsWidth[this.index],this.birdsHeight[this.index]);

        // super.draw(this.img, 0, 0,
        //     this.img.width, this.img.height,
        //     0, 0,
        //     this.img.width, this.img.height)
    }

}